In environments where network bandwidth is limited, a network cache can be used to improve the effective response time between a client and a server. A network cache is data storage that is located closer to the requester than a server that originally contains the requested data. Caching has been used effectively for applications such as web-applications, databases and computer processing. Web caching utilizes temporary storage for storing web documents, such as HTML pages and images, to reduce bandwidth usage, server load, and/or perceived lag.
Although web-caching is used frequently, caching has also been used extensively in other distributed systems, such as information centric networks. Caching performs well in these environments because a request often includes a unique handle such as a Uniform Resource Identifier (URI). The handle can be used as a unique name that is associated with cached data. Caching works by implementing a proxy or gateway which allows requests from a client to pass through to a server. When the proxy receives a request containing a handle that has not been previously encountered, the proxy sends the requests to the server, sees the resulting response and stores the result locally. When a second request with the same handle is encountered by the proxy in the future, the locally stored data is sent by the proxy in a response to the client instead of sending the request to the server to get a response from the server. Various caching implementations are concerned with how to manage the locally cached data, as well as maintaining consistency between cache and server data.
Cognitive applications are applications which take a request from a client (which can include a signal from a sensor device, voice samples from a microphone, a request from a computer software, or a signal from other types of devices) and apply machine learning techniques to produce an output. In particular implementations, the output is the result of feeding the signal received from the sensor device as an input to a cognitive engine (e.g., a neural network, a decision tree, a rule engine etc.). Examples of input signals include a machine audio signal, a video signal, or other sensor output signals. A typical machine learning application is a classification system in which an input signal, such as a measured audio signal, is classified by machine learning techniques into different categories, e.g. a normal sound, breaking glass, broken gear, etc.
In a typical system for a cognitive application a sensor generates a signal and sends the signal to a server over a network. When the server receives the signal as an input signal, the server compares the input signal against a model stored locally by the model. In some applications, the model may have been previously learned using training data and may take the form of a neural network, a decision table or a rule set, or other modeling implementations. In a typical implementation, the server compares input signal x against the model, and computes a function f(x). The server then uses the result of the computation of f(x) for a subsequent action such as sending a notification, opening a trouble ticket etc. In some other cases, the server may be using many cognitive applications in a sequence.
However, in some situations, the network between the sensor and the server has a high degree of latency or limited bandwidth. In other case, privacy or regulations may prevent input from being sent over the network. The illustrative embodiments recognize that in these and many other cases, approaches to avoid utilizing the network to access a distant data source by using a more local data source, e.g. by using a proxy server, are desirable. In addition, it may be desirable to configure the proxy to perform other processing on the input signal. However, in many cases the proxy may not be able to use the network model. The network model may be too big, or may require some additional data at the server.
The illustrative embodiments recognize that in the case of many cognitive applications that are based on machine learning techniques, straight-forward caching is ineffective. The input signals may contain a lot of noise, and two consecutive requests do not exactly correspond to the same input. The signal does not contain a unique handle, and even the same signal (e.g. the sound of an engine or the image of a device) may be slightly different over different readings. As a result, the illustrative embodiments recognize that the input in its raw format would rarely match, and caching does not work effectively. As a result, it is hard to create effective caches for cognitive applications.
Various embodiments described herein provide for an improvement in the effectiveness of caching for cognitive applications by configuring a proxy server to use a handle function to generate a handle for a received signal to assist in caching the input signals in a cache associated with the proxy server.